load #rude_cat_wallpaper
then save appdata/system/wallpaper/rude_cat_wallpaper
comes in any colour, isn't always rude
[ BEAR HUNTER NINJA ]
The rules are simple.
From the three cards offered you get to pick one.
The computer then picks its choice of card from the same selection.
Hunter wins against Bear
Bear wins against Ninja
Ninja wins against Hunter
Will the card you pick win?
Just a few notes from playing around with userdata. These notes assume 8M VM cycles/sec and large enough arrays to avoid substantial overhead and fully realize economies of scale.
- Fast ops -
add
/mul
/copy
/etc. - cost 1/16 cycle. - Slow ops -
div
/convert
/etc. - cost 1/4 cycle. matmul
is charged as a fast op based on the size of the output matrix. I'm a little suspicious that the answer seems to be so simple, so I'm wondering if I missed something.copy
andmemmap
/memcpy
are approximately the same speed for 64 bit datatypes. For smaller datatypes,memcpy
is proportionally faster, though of course you then have to manage strides/spans yourself.memcpy
should also enablereinterpret_cast
type shenanigans.- There is substantial overhead for small spans. If you use spans of length 1 you pay 1/4 cycle/span, same as a slow op. It looks like this may be a flat cost per span, but I'm not sure. Using the full/strided forms of the ops does not seem to have noticeable additional costs beyond the per-span cost.
- For full-screen rendering, you have about 1 cycle/pixel at 480x270x60Hz. This includes whatever scaling/conversion you need to do at the end of the process. So realistically, you'll get in the neighborhood of 10 additions/multiplications per pixel. Exact numbers depend on whether you need a divide at the end, and whether or not you can work in
u8
. - userdata flat access w/ locals seems to cost 1 cycle/element including the assignment.
- userdata
get
is 1/4 cycle / element at scale ... but each explicit assignment will cost you 1 cycle on top of this. - userdata
set
is 1 cycle / element at scale.
There also seems to be some interesting behavior happening where multivals, even very large multivals, do not seem to noticeably increase CPU usage when passed to pack
or set
. While I'm enjoying taking advantage of this for f64
to u8
conversions at the same cost as convert
, I'm worried this might not last.
tabUtil.lua library for use with Picotron
Contains useful functions for working with tables
Install with load #base64 and run it with crtl+r
A new file will be created /appdata/system/lib/tabUtil.lua
I personally love to use tabUtil.toString(#Table), its handy for debugging
Contains 3 functions, Usage Below
include("/appdata/system/lib/tabUtil.lua") myTable = { name="Microsoft", employees={"Bill Gates", "Some Dude"}, myFunction=function () print("Im a function") end, } meSecondTable = tabUtil.shallowCopy(myTable) myTable = {} print(tabUtil.getKeyCount(meSecondTable)) print(tabUtil.toString(meSecondTable)) |
This prints out the following
Verion 0 - Initial release
dynInclude compatible: https://www.lexaloffle.com/bbs/?tid=141042
PicoChat requires not to be run in the browser to function
Huge thanks to PixelDud for rebuilding the server in Go to support linux
Introducting PicoChat!
PicoChat is Picotron's first chat room. Its fully capable of sending and receiving messages, changing server and username.
Use /nick <name>
to change your Username.
Use /server <server address>
to change your server.
Want to setup your own chatroom?
Here's how to setup your own chatroom server:
- Download the server from here.
- Port forward port 80.
- Run the server.
If you want to add your server to the public server list, please send me a message on discord hessery
Looking for a server?
Here's a list of the current public servers:
- Official PicoChat Server
nenjine.com
Welcome No Witches!
The gala has begun! What fun there shall be, so long as no witches attend...
The gala begins! The invitations have gone out, dresses have been bought, hair dyed and styled, jewelry adorning the many princesses of the many kingdoms. However, some witches have caught wind of the event, and have disguised themselves to sneak in and ruin the party! Follow the dress codes as the princesses enter to ensure that the party goes well!
—————————————————————————————————————————
Controls
🅾️ or Z or C - Allow princess in, have fun at the party!
❎or X - Accuse of witchcraft! Begone with ye!
⬅️ ➡️ - View rules and score
How to Play
The princesses will approach you and wait to be announced into the gala. Quickly glance them over to make sure the follow the dress code, and that their names don't appear on the list of known witches before allowing them in. Get a score of at least 20 to unlock a more difficult dress code. Be quick, for there's a limited time before the party ends.
—————————————————————————————————————————
1.1 Update
A little silly lil' game I made to play with my friends (so its only two player), and figured I might as well publish it.
Some things to know:
You gotta fast fall and let go before hitting the ground to gain height.
If you dash into a bullet it is reflected and bounces back and recharges your dash instantly (yes ping pong is possible).
The rest is to be discovered as you play, have fun!
Just been learning how to code and such, AND I MADE MOVEMENT CODE!!! WOOHOO!!!
Gotta love the PICO-8 Manual for showing me the ropes on movement code.
Arrow keys to move the eyes.
Wallpaper that recreates the iconic 10 PRINT program for the Commodore 64 in your Picotron.
Instructions:
-
run
load #tenprint-0
-
run
save /appdata/system/wallpapers/tenprint.p64.png
(you might have to create the wallpaper folder, if you haven't done that yet) - open System Settings and select this wallpaper from the list
Is it even possible?
Also how to get mouse dx dy after you do that?
Uses your theme's first two "desktop" colors for letters.
Digital Invader
Select Same Number
and Delete it.
Good day, my monitor is 2560x1440, but on fullscreen there are black borders around the Picotron window. To get fullscreen without borders I have to enable stretching, which makes the image blurry.
1440p is just 720p doubled so I assumed there should be no problem scaling to that resolution, but it seems like the window itself is running at 1920x1080 in the center with black borders around it.
Is there a way to scale to cover the entire screen without making the image blurry?
Guide
Currently (in Picotron 0.1.0e) it's hard to use a PNG image as a sprite. You can fetch("myimage.png")
, but the result isn't in the right image format. So, here's a small tool to convert PNG files into picotron sprites.
Drag any .png or .qoi image into the tool to convert it into a sprite pod on your clipboard. You can paste this into the graphics editor, or into code.
Drag in a .hex file (e.g. from lospec.com) or a .pal file (e.g. from OkPal) before importing your png to change the import palette.
Details
Import speed
This tool prioritizes import speed. Images with only a few unique colors (e.g. an image already in the picotron palette) will import much faster than images with many colors.
Color quantization
You can use any colors, and the tool will try it's best to fit them to the palette. It isn't very smart about converting colors (it uses nearest euclidean distance in RGB space, and doesn't do any dithering). If you want better color conversion, use some external tool and make sure the PNG is in the correct palette before converting it with this tool.
See also PNG Frame, in "Related tools" below.
Wallpapers
If you're making a desktop wallpaper, I think you should stick to the default palette. If you use a custom palette, then your colors will change whenever you focus some window besides the desktop, I'm pretty sure.
To make a wallpaper:
- make sure your wallpaper folder exists (
mkdir /appdata/system/wallpapers
) - save a new cart into that folder with this code:
function _draw() spr(1) _draw = function() end end
- convert your image using this tool, and copy it into your clipboard
- paste your image into sprite 1 of the default sprite file
Library usage
This code is organized to make it easy to use as a library in your code. The library is self-contained in lib/importpng.lua
, and you interact with it by calling myjob = job_importpng(myimg)
. The returned "job" is essentially a coroutine, but one that will let you limit its processing time. Call myjob:work(limit)
during _update() until the job is done, or call myjob:join()
a single time to finish it all at once (likely lagging the game). See the code for more details.
License: CC4-BY-NC-SA
Related tools
- Cutievirus' PNG Frame -- a similar tool with much better color conversion. If your png is already in the right palette, importpng is faster than PNG Frame. But if you want better color quantization, use PNG Frame.
- My Aseprite PICO-8/Picotron export extension lets you export Picotron pods directly to your clipboard from Aseprite.
- My sprite importer lets you import PICO-8 spritesheets into Picotron.
- My photo carousel uses this importer to show your custom PNGs as an animated wallpaper.
- drakmaniso's OkPal palette editor.
changelog
Find your way through the lava field and gather precious treasure.
How to play
Use the arrow keys to navigate the explorer from the starting point to the treasure. Memorizing the correct path is essential! Discover the right route through trial and erro...ehm death 🔥🔥🔥
About
Created by Pidibit as a jam game for Trijam #261, a three-hour game jam.
The jam theme was One wrong move.
This is my first Trijam entry and first project in PICO-8, I love it! 😍
Screenshots